home *** CD-ROM | disk | FTP | other *** search
Oberon Document | 1995-08-09 | 5.2 KB | 165 lines | [oODC/obnF] |
- Documents.StdDocumentDesc
- Documents.DocumentDesc
- Containers.ViewDesc
- Views.ViewDesc
- Stores.StoreDesc
- Documents.ModelDesc
- Containers.ModelDesc
- Models.ModelDesc
- Stores.ElemDesc
- TextViews.StdViewDesc
- TextViews.ViewDesc
- TextModels.StdModelDesc
- TextModels.ModelDesc
- TextModels.AttributesDesc
- Helvetica
- Helvetica
- Helvetica
- StdStamps.StdViewDesc
- Helvetica
- Helvetica
- Helvetica
- MODULE NewModels;
- IMPORT Domains, Stores, Models;
- CONST
- minVersion = 0; maxVersion = 0;
- TYPE
- Model* = POINTER TO ModelDesc;
- ModelDesc* = RECORD (Models.ModelDesc) END;
- Directory* = POINTER TO DirectoryDesc;
- DirectoryDesc* = RECORD END;
- UpdateMsg* = RECORD (Models.UpdateMsg)
- (* message fields *)
- END;
- StdModel = POINTER TO RECORD (ModelDesc)
- (* model fields *)
- END;
- StdDirectory = POINTER TO RECORD (DirectoryDesc) END;
- Op = POINTER TO RECORD (Domains.OperationDesc)
- model: StdModel;
- (* model-operation fields *)
- END;
- VAR dir-, stdDir-: Directory;
- (** Model **)
- PROCEDURE (m: Model) Internalize* (VAR rd: Stores.Reader);
- VAR version: SHORTINT;
- BEGIN
- m.Internalize^(rd);
- IF ~rd.cancelled THEN
- rd.ReadVersion(minVersion, maxVersion, version)
- END
- END Internalize;
- PROCEDURE (m: Model) Externalize* (VAR wr: Stores.Writer);
- BEGIN
- m.Externalize^(wr);
- wr.WriteVersion(maxVersion)
- END Externalize;
- (** Directory **)
- PROCEDURE (d: Directory) New* (): Model;
- BEGIN
- HALT(127)
- END New;
- (* Op *)
- PROCEDURE (op: Op) Do;
- VAR msg: UpdateMsg;
- BEGIN
- (* perform model operation and set up the fields of the update message accordingly *)
- Models.Broadcast(op.model, msg) (* update all views on this model *)
- END Do;
- PROCEDURE NewOp (model: Model (* additional parameters *) ): Op;
- VAR op: Op;
- BEGIN
- ASSERT(model # NIL, 20);
- NEW(op);
- (* set up operation parameters *)
- RETURN op
- END NewOp;
- (* StdModel *)
- PROCEDURE (m: StdModel) Internalize (VAR rd: Stores.Reader);
- VAR version: SHORTINT;
- BEGIN
- (*ASSERT(m is not yet initialized, 20);*)
- m.Internalize^(rd);
- IF ~rd.cancelled THEN
- rd.ReadVersion(minVersion, maxVersion, version);
- IF ~rd.cancelled THEN
- (* read model fields *)
- END
- END
- END Internalize;
- PROCEDURE (m: StdModel) Externalize (VAR wr: Stores.Writer);
- BEGIN
- (*ASSERT(m is already initialized, 20);*)
- m.Externalize^(wr);
- wr.WriteVersion(maxVersion);
- (* write model fields *)
- END Externalize;
- PROCEDURE (m: StdModel) InitFrom (source: Models.Model);
- BEGIN
- (*ASSERT(m is not yet initialized, 20);*)
- ASSERT(source # NIL, 21);
- (*ASSERT(source is already initialized, 22);*)
- (* set up empty model *)
- END InitFrom;
- PROCEDURE (m: StdModel) CopyAllFrom (source: Models.Model);
- BEGIN
- (*ASSERT(m is not yet initialized, 20);*)
- ASSERT(source # NIL, 21);
- (*ASSERT(source is already initialized, 22);*)
- ASSERT(Stores.SameType(m, source), 23);
- WITH source: StdModel DO
- (* perform deep copy of source *)
- END
- END CopyAllFrom;
- (* StdDirectory *)
- PROCEDURE (d: StdDirectory) New (): Model;
- VAR m: StdModel;
- BEGIN
- NEW(m); (* initialize m *); RETURN m
- END New;
- (** miscellaneous **)
- PROCEDURE New* (): Model;
- BEGIN
- RETURN dir.New()
- END New;
- PROCEDURE Clone* (source: Model): Model;
- VAR st: Stores.Store; m: Model;
- BEGIN
- ASSERT(source # NIL, 20);
- st := Stores.Clone(source); m := st(Model);
- m.InitFrom(source);
- RETURN m
- END Clone;
- PROCEDURE Copy* (source: Model): Model;
- VAR st: Stores.Store; m: Model;
- BEGIN
- ASSERT(source # NIL, 20);
- st := Stores.Clone(source); m := st(Model);
- m.CopyAllFrom(source);
- RETURN m
- END Copy;
- PROCEDURE SetDir* (d: Directory);
- BEGIN
- ASSERT(d # NIL, 20);
- dir := d
- END SetDir;
- PROCEDURE Init;
- VAR d: StdDirectory;
- BEGIN
- NEW(d); stdDir := d; dir := d
- END Init;
- BEGIN
- Init
- END NewModels.
- TextControllers.StdCtrlDesc
- TextControllers.ControllerDesc
- Containers.ControllerDesc
- Controllers.ControllerDesc
- TextRulers.StdRulerDesc
- TextRulers.RulerDesc
- TextRulers.StdStyleDesc
- TextRulers.StyleDesc
- TextRulers.AttributesDesc
- Helvetica
- Documents.ControllerDesc
-